var path = require('path');
var express = require('express');
var session = require('express-session');
var MongoStore = require('connect-mongo')(session);// 将 session 存储于 mongodb，结合
//var cookieParser = require('cookie-parser');

// express-session 使用
//var flash = require('connect-flash');// 页面通知提示的中间件，基于 session 实现
var config = require('config-lite')(__dirname);// 读取配置文件
var routes = require('./routes');// routes/index.js
var pkg = require('./package');// package.json
//var winston = require('winston');// 日志
//var expressWinston = require('express-winston');// 基于 winston 的用于 express 的日志中间件

var app = express();

//app.use(cookieParser());
// 设置静态文件目录,这里用来放置angular文件
/*app.use(express.static(path.join(__dirname, 'public')));*/
app.use(express.static('/home/jjs/webstorm/NiceFish/dist'));
// session 中间件
app.use(session({
    name: config.session.key,// 设置 cookie 中保存 session id 的字段名称
    secret: config.session.secret,// 通过设置 secret 来计算 hash 值并放在 cookie 中，使产生的
    // signedCookie 防篡改
    resave: true,// 强制更新 session
    saveUninitialized: false,// 设置为 false，强制创建一个 session，即使用户未登录
    cookie: {
        maxAge: config.session.maxAge// 过期时间，过期后 cookie 中的 session id 自动删除
    },
    store: new MongoStore({// 将 session 存储到 mongodb
        url: config.mongodb// mongodb 地址
    })
}));
app.use(require('express-formidable')({
    uploadDir: path.join(__dirname, 'public/img'),// 上传文件目录
    keepExtensions: true// 保留后缀
}));

routes(app);

app.use(function (err, req, res, next) {
    res.send({
        error: err
    });
});

if (module.parent) {
    module.exports = app;
} else {
    // 监听端口，启动程序
    app.listen(config.port, function () {
        console.log(`${pkg.name} listening on port ${config.port}`);
    });
}
